/*
01.计算字符串的长度，一个汉字两个字符:   		fucCheckLength()
02.日期合法性校验 							checkDate()
03.校验字符串是否为中文:               		checkIsChinese(str)
04.验证字符串只由字母组合而成					checkIsChar(str)
05.校验字符串只由数字组合而成 					checkIsNum(str)
06.校验字符串由字母,数字或两者组合而成 		checkIsStrNum(str)
07.校验字符串由字母,数字,下划线或其组合 		checkIsStrNumLine(str)
08.校验字符串由字母、数字、下划线、中文组成	checkIsString(str)
09.校验字符串为变量							checkIsVar(str)
10.校验字符串为类名							checkIsClass(str)
11.校验字符串为jsp路径						checkIsJsp(str)
12.验证字符串是否为逗号分隔					checkIsCommaSplit(str)

13.校验字符串为手机号							checkIsMobile(str)
14.校验字符串为座机号							checkIsTelephone(str)
15.校验字符串为邮箱							checkIsEmail(str)

16.校验字符串为整数							isNum(str, flag)
17.校验字符串为浮点数							isFloat(str, flag)
18.保留N位小数								isDecimal(str, N)




50.从身份证中提取出生日期						getBirthDayFromID(str)




*/


/************************************************************************/

/**
 * 对startWith()的扩展
 */
String.prototype.trim = function() { 
	return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 
String.prototype.ltrim = function() { 
	return this.replace(/(^\s*)/g, ""); 
} 
String.prototype.rtrim = function() { 
	return this.replace(/(\s*$)/g, ""); 
}


/**
 * 对startWith()的扩展
 */
String.prototype.startWith=function(str){
	if(str==null||str==""||this.length==0||str.length>this.length){
		return false;
	}
	return (this.substr(0,str.length) == str);
}
/**
 * 对endWith()的扩展
 */
String.prototype.endWith = function(str){
	if(str==null||str==""||this.length==0||str.length > this.length){
		return false;
	}
	return(this.substring(this.length-str.length) == str);
}
/**
 * 对replaceAll()的扩展
 */
String.prototype.replaceAll = function(s1,s2) { 
    return this.replace(new RegExp(s1,"gm"),s2); 
}



//函数名：fucCheckLength
//功能介绍：检查字符串的长度
//参数说明：要检查的字符串
//返回值：长度值

function fucCheckLength(strTemp){
	var i, sum=0;
	if(_db == 'mysql'){
		return strTemp.length;
	}else{
		for(i=0;i<strTemp.length;i++) {
			if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)){
				sum=sum+1;
			} else {
				sum=sum+2;
			}
		}
	 	return sum;
	}
}

/**
 * 日期合法性校验
 */
function checkDate(theDate){
	var reg = /^\d{4}-((0{0,1}[1-9]{1})|(1[0-2]{1}))-((0{0,1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;   
	var result=reg.test(theDate);
	if(result){
		var arr_hd=theDate.split("-");
		var dateTmp;
		if(arr_hd[1].length != 2){
  			return false;
		}
    	if(arr_hd[2].length != 2){
			return false;
		}
		dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
		if(dateTmp.getFullYear()!=parseFloat(arr_hd[0])
			|| (dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1)
			|| dateTmp.getDate()!=parseFloat(arr_hd[2])){
			result = false;
		}
	}
	return result;
}

/**
*校验字符串是否为中文
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为中文，校验通过，         返回true
*如果字串为非中文，             返回false    参考提示信息：必须为中文！
*/
function checkIsChinese(str){
    //如果值为空，通过校验
    if (str == ""){
        return true;
    }
    str = str.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,'');
	if(str == ''){
		return true;
	} else {
		return false;
	}
}

/**
 * 验证字符串是否只由字母组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsChar(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	return (new RegExp(/^[a-zA-Z]*$/g).test(str));
}
/**
 * 验证字符串是否只由数字组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsNum(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	return (new RegExp(/^[0-9]*$/g).test(str));
}

/**
 * 验证字符串是否只由字母,数字或两者组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsStrNum(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	return (new RegExp(/^[a-zA-Z0-9]*$/g).test(str));
}

/**
 * 验证字符串是否只由字母,数字,下划线或两者组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsStrNumLine(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	return (new RegExp(/^[a-zA-Z0-9_]*$/g).test(str));
}

/**
 * 验证字符串是否由字母,数字,下划线、汉字组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsString(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	str = str.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,'');
	str = str.replace(/[a-zA-Z0-9_\(\)\+\-]/g,'');
	if(str == ''){
		return true;
	} else {
		return false;
	}
}
/**
 * 验证字符串是否由字母,数字,下划线、汉字组合而成
 * @param 字符串
 * @return 是true 非false
 */
function checkIsString1(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	str = str.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,'');
	str = str.replace(/[a-zA-Z0-9_\(\)\+\-]/g,'');
	if(str == ''){
		return true;
	} else {
		return false;
	}
}


/**
 * 验证字符串是否为变量名
 * @param 字符串
 * @return 是true 非false
 */
function checkIsVar(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
    var str1 = str.substr(0,1);
	if(checkIsNum(str1)){
		return false;
	} else {
		return checkIsStrNumLine(str);
	}
}
/**
 * 验证字符串是否为包名
 * @param 字符串
 * @return 是true 非false
 */
function checkIsClass(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	if(str.startWith(".") || str.endWith(".")){
		return false;
	}
	var arr = str.split(".");
	for(var i=0;i<arr.length;i++){
		var result = checkIsVar(arr[i]);
		if(!result){
			return false;
		}
	}
	return true;
}


/**
 * 验证字符串是否为包名
 * @param 字符串
 * @return 是true 非false
 */
function checkIsJsp(str){
	//如果值为空，通过校验
    if (str == ""){
        return true;
    }
	if(str.startWith(".") || str.endWith(".") || str.endWith("/")){
		return false;
	}
	var arr1 = str.split(".");
	if(arr1.length != 2){
		return false;
	}
	if(checkIsChar(arr1[1])){
		var arr = arr1[0].split("/");
		for(var i=0;i<arr.length;i++){
			var result = checkIsVar(arr[i]);
			if(!result){
				return false;
			}
		}
	} else {
		return false;
	}
	return true;
}

/**
 * 验证字符串是否为逗号分隔
 * @param 字符串
 * @return 是true 非false
 */
function checkIsCommaSplit(str){
	if (str == ""){
        return true;
    }
	if(str.startWith(",") || str.endWith(",")){
		return false;
	}
	var arr = str.split(",");
	var result = false;
	for(var i=0; i<arr.length; i++){
		result = checkIsString(arr[i]);
		if(!result){
			break;
		}
	}
	return result;
}

/**
 * 验证字符串是否为手机号
 * @param 字符串
 * @return 是true 非false
 */
function checkIsMobile(str){
	if (str == ""){
        return true;
    }
    var reg =/^1[0-9]{10}$/; 
    return (new RegExp(reg).test(str));
}

/**
 * 验证字符串是否为座机号
 * @param 字符串：普通座机号及分机：12345678,0431-12345678,0431-12345678-12345
 * @return 是true 非false
 */
function checkIsTelephone(str){
	if (str == ""){
        return true;
    }    
    var reg = /(^[0-9]{7,8}$)|(^[0-9]{7,8}\-[0-9]{1,4}$)|(^[0-9]{3,4}[-]{0,1}[0-9]{7,8}$)|(^[0-9]{3,4}[-]{0,1}[0-9]{7,8}\-[0-9]{1,5}$)/;
    return (new RegExp(reg).test(str));
}  

/**
 * 验证字符串是否为邮箱
 * @param 字符串：email：zhutou@163.com
 * @return 是true 非false
 */
function checkIsEmail(str){
	if (str == ""){
        return true;
    }
    var reg = /^([A-Za-z0-9])(\w)+@(\w)+(\.)(com|com\.cn|net|cn|net\.cn|org|biz|info|gov|gov\.cn|edu|edu\.cn)/;   
    return (new RegExp(reg).test(str));
}


/**
 * 校验字符串为整数
 * @param 字符串
 * @return 是true 非false
 * @flag +非负整数,-非正整数
 */
function isNum(str, flag){
	if(str.trim() == ''){return false;}
	var reg = /^-?\d+$/;
	if(flag == '+'){
		reg = /^\d+$/;
	}else if(flag == '-'){
		reg = /^((-\d+)|(0+))$/;
	}
	return str.search(reg)==0;
}

/**
 * 校验字符串为浮点数
 * @param 字符串
 * @return 是true 非false
 * @flag +非负浮点数,-非正浮点数
 */
function isFloat(str, flag){
	if(str.trim() == ''){return false;}
	var reg = /^(-?\d+)(\.\d+)?$/;
	if(flag == '+'){
		reg = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
	}else if(flag == '-'){
		reg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
	}
	return str.search(reg)==0;
}

/**
 * 保留N位小数
 * @param str字符串
 * @param N小数位数
 * @return 是true 非false
 */
function isDecimal(str, N){
	if(str.trim() == ''){return false;}
	var reg = /^-?[1-9]+\d*[\.\d]?\d{0,2}$/g;
	switch(N){
		case 0: reg = /^-?[1-9]+\d*[\.\d]?\d{0,0}$/g; break;
		case 1: reg = /^-?[1-9]+\d*[\.\d]?\d{0,1}$/g; break;
		case 2: reg = /^-?[1-9]+\d*[\.\d]?\d{0,2}$/g; break;
		case 3: reg = /^-?[1-9]+\d*[\.\d]?\d{0,3}$/g; break;
		case 4: reg = /^-?[1-9]+\d*[\.\d]?\d{0,4}$/g; break;
		case 5: reg = /^-?[1-9]+\d*[\.\d]?\d{0,5}$/g; break;
		case 6: reg = /^-?[1-9]+\d*[\.\d]?\d{0,6}$/g; break;
		case 7: reg = /^-?[1-9]+\d*[\.\d]?\d{0,7}$/g; break;
		case 8: reg = /^-?[1-9]+\d*[\.\d]?\d{0,8}$/g; break;
		case 9: reg = /^-?[1-9]+\d*[\.\d]?\d{0,9}$/g; break;
		default :  break;
	}
	return reg.test(str);
}




/**
 * 从身份证中提取出生日期
 * @param str字符串
 * @return 是true 非false
 */
function getBirthDayFromID(str){
	if(null == str){
		return '';
	}
	var str = str.trim();
	while(str.startWith('_')){
		str = str.substr(1,str.length - 1);
	}
	if(str.length >= 15 && str.length < 18){
		return '19' + str.substr(6,2) +'-'+ str.substr(8,2) +'-'+ str.substr(10,2);
	} else if(str.length >= 18){
		return str.substr(6,4) +'-'+ str.substr(10,2) +'-'+ str.substr(12,2);
	} else {
		return '';
	}
}


